typedef struct WSAData {
WORD wVersion;
WORD wHighVersion;
char szDescription[WSADESCRIPTION_LEN+1];
char szSystemStatus[WSASYS_STATUS_LEN+1];
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char FAR * lpVendorInfo;
} WSADATA, FAR * LPWSADATA;
wVersion - версия поддержка которой ожидается. Ведь можно поддерживать и младшую версию. wHighVersion - максимальная версия, с которой можно работать. Нормально когда они совпадают хотя и не обязаны. szDescription - текстовая строка с описанием. szSystemStatus - опять текстовая строка с описанием, но в приложении для типа операционной среды. С остальными сложнее, приложение должно проигнорировать iMaxsockets, iMaxUdpDg, и lpVendorInfo области в WSAData, если величина в wVersion после успешного вызова на WSAStartup в версии 2.
Я внес в код инициализации WinSock изменения
BOOL CSeverWinSock::StartWinSock()
{
if (WSAStartup(WINSOCK_VERSION, &wsaData))
{
AfxMessageBox("winsock not bi initialized !");
LogsWrite("winsock not bi initialized !");
WSACleanup();
return FALSE;
}
LogsWrite("Запуск WinSock");
LogsWriteNotTime("Информация о WinSock.DLL");
LogsWriteNotTime(wsaData.szDescription);
LogsWriteNotTime(wsaData.szSystemStatus);
return TRUE;
}
Появилась функция LogsWriteNotTime, которая пишет в log файл без указания времени. Вот она
void CSeverWinSock::LogsWriteNotTime(CString writeString)
{
if (TestLogFile) cLogFile.write(writeString);
}
Вносим пояснения в при получении имени хоста.
BOOL CSeverWinSock::SocketGetHostName()
{
........
LogsWriteNotTime("Получаем имя хоста");
LogsWrite(chInfo);
........
}
Дополнительная информация о создании сокета.
BOOL CSeverWinSock::CreateSocket()
{
.............
LogsWrite("Создали сокет");
CString temp;
temp.Format(" %i", PORT_ADDR);
LogsWriteNotTime("Порт " + temp);
LogsWriteNotTime("Протокол по умолчанию ");
..........
}
так же я добавил фиксацию времени обращения клиента.
afx_msg LRESULT CHTTPServerView::OnServerAccept(WPARAM wParam, LPARAM lParam)
{
.........
HTTPServer.LogsWrite("Запрос соединение клиентом");
..........
closesocket(HTTPServer.clientsocket);
HTTPServer.LogsWrite("Отсоединение клиента");
...........
}
Конечно расширять информативность лога надо и дальше, но пока хватит :-) Вот как он уже выглядит !!!!
09 : 45 :03 Запуск WinSock Информация о WinSock.DLL Microsoft wsock32.dll, ver2.2, 32bit of Apr 28 1998, at 19:33:24. On Win95. Получаем имя хоста 09 : 45 :03 Jana 09 : 45 :03 Создали сокет Порт 80 Протокол по умолчанию 09 : 45 :03 bind 09 : 45 :03 WSAAsyncSelect ..........